190 IF W < = -1000 OR W > = 1000 THEN A$ = LEFT$(A$, LEN(A$) -6) +"," + RIGHT$(A$,6): REM ADD COMMA IF IN THOUSANDS
200 POKE 36,G - LEN(A$): PRINT A$;: RETURN
210 REM
220 REM CALCULATE MONTHLY PAYMENT
230 REM
240 L = A(2): REM LOAN AMOUNT
250 IR = A(3)/1200: REM MONTHLY INTEREST RATE
260 Y = A(4): REM # YEARS
270 BM = A(18): REM BEGINNING MONTH
280 M = Y *12: REM # OF MONTHS
290 U = (1 +IR) ^M
300 MI = L *IR: REM MONTHLY INTEREST
310 MP = MI *U/(U -1): REM MONTHLY PAYMENT
320 YR = A(26):CT = 0: RETURN
330 REM
340 REM PROGRAM CALCULATIONS
350 REM
360 CT = CT +1:TP = 0:I = 0
370 TY = (13 -BM) *MP: IF M <12 THEN TY = M *MP: REM TOT YEAR PMT
380 FOR AA = BM TO 12:MI = L *IR:P = (MP -MI):TP = TP +P:I = I +MI:L = L -P:M = M -1: IF M >0 THEN NEXT :AA = 0:BM = 1: REM I = TOTAL INT. TP= TOTAL PRINCIPAL
410 TI = A(14) +A(15): IF MM = 2 AND T$ = "Y" AND DI >A(15) THEN TI = TI +DI -A(15): REM TOTAL INCOME/DI=INT.ON INVESTED DOWN PAYMENT/T$=TAXABLE OR NON TAXABLE
420 EI = A(9): IF EI >0 THEN GOSUB 690: IF EI <0 THEN EI = 0: REM CALCULATE I.R.A.
430 PT = 0: IF CT >1 THEN PT = A(5): REM PROPERTY TAX
440 PS = 0:CC = 0: IF CT = 1 THEN PS = (A(7)/100) *A(2):CC = A(8): REM POINTS/CLOSING COSTS
450 PE = A(13) *2000: REM PERSONAL EXEMPTIONS
460 SI = (A(17)/100) *A(14): REM STATE INCOME TAX
470 CH = A(10): REM CHARITIES
480 PI = 0: IF YR <1991 THEN PI = .1 *A(11): IF YR <1990 THEN PI = .2 *A(11)
490 YR = YR +1
500 TD = I +EI +PS +CC +PE +SI +CH +PI +PT +A(6): REM TOTAL DED
510 AG = TI -TD: REM ADJUSTED GROSS INCOME
520 REM
530 REM CALCULATE F.I.T.W. & FEDERAL TAXES
540 REM
550 EW = A(16): IF EW >0 AND EW <500 THEN EW = EW *52: GOTO 580: REM CALCULATE YEARLY FITW FROM WEEKLY AMOUNT
560 IF EW = 0 AND A(12) = 1 THEN A = TI -(EI +PE +3100):EW = (.15 *A): IF A >17850 THEN EW = (.15 *17850) +(.28 *(A -17850)): REM ESTIMATE SINGLE FITW
570 IF EW = 0 AND A(12) = 2 THEN A = TI -(EI +PE +5200):EW = (.15 *A): IF A >29750 THEN EW = (.15 *29750) +(.28 *(A -29750)): REM ESTIMATE MARRIED FITW
580 ET = (.15 *AG): IF A(12) = 2 AND AG > = 29750 THEN ET = (.15 *29750) +(.28 *(AG -29750)): REM ESTIMATED MARRIED FEDERAL TAXES
590 IF A(12) = 1 AND AG > = 17850 THEN ET = (.15 *17850) +(.28 *(AG -17850)): REM ESTIMATED SINGLE FEDERAL TAXES
600 ES = ((TI -EI) -(A(13) *1000)) *(A(17)/100): REM ESTIMATED STATE INCOME TAX
610 FR = EW -ET: REM ESTIMATED FEDERAL REFUND
620 SR = SI -ES: REM STATE TAX REFUND
630 TR = FR +SR: REM TOTAL TAX REFUND
640 AM = (TY -TR)/(13 -BM): IF AM >MP THEN AM = MP: REM ADJUSTED MORTGAGE PAYMENT
650 RETURN
660 REM
670 REM I.R.A. CALCULATIONS
680 REM
690 IF A(12) = 1 AND TI >25000 THEN EI = (35000 -TI) *(A(9)/10000): REM SINGLE I.R.A.
700 IF A(12) = 2 AND TI >40000 THEN EI = (50000 -TI) *(A(9)/10000): REM MARRIED I.R.A.
710 IF INT(EI)/10 - INT(EI/10) >0 THEN EI = INT(EI/10) *10 +10: REM ROUND UP TO NEAREST TEN
720 RETURN
730 REM
740 REM PRINTOUT MENU
750 REM
760 F$ = "PRINTOUT MENU":A1 = 13:A2 = 14:CC = -3:LC = 33: GOSUB 2690:X = X -12:G$ = "S": IF X = 2 THEN G$ = "P"
770 HOME : IF G$ = "P" THEN PRINT CHR$(21): VTAB 12: POKE 36,16: PRINT "PRINTING": PRINT CHR$(4)"PR#1": PRINT CHR$(9);"80N": RETURN
780 RETURN
790 FOR X = 1 TO 79: PRINT "-";: NEXT : PRINT : RETURN
800 IF G$ = "S" THEN IF C = 8 THEN C = 0: GOSUB 1020: IF ASC(H$) = 27 THEN 2620
810 RETURN
820 REM
830 REM ITEMIZED 5 YEAR REPORT
840 REM
850 GOSUB 760:VT = 14: IF G$ = "S" THEN VTAB 12: HTAB 33: PRINT "ANALYZING DATA"
860 GOSUB 240
870 FOR X = 1 TO 5: GOSUB 360
880 MC = (A(6) +A(5))/12: REM ADDITIONAL MONTHLY COST
2390 G = 15: POKE 36,3 - LEN( STR$(CT)): PRINT CT" ";MT$(MT)", "YR;: FOR X = 1 TO 2:W = C(X):G = G +10: GOSUB 160: NEXT :G = 34: FOR X = 3 TO 5:W = C(X):G = G +15: GOSUB 160: NEXT : PRINT
2400 MT = MT +1:M = M -1
2410 VT = 11: IF MT >12 AND G$ = "S" THEN GOSUB 1020: IF ASC(H$) = 27 THEN 2620
2420 IF MT >12 THEN MT = 1:YR = YR +1
2430 IF G$ = "P" AND MT = 1 THEN PC = PC +1: IF M >0 AND PC = 4 THEN PRINT CHR$(12):PC = 0: GOTO 2330
2440 IF M = 0 THEN 2590
2450 GOTO 2360
2460 REM TITLE SCREEN
2470 HOME : VTAB 10: POKE 36,18: PRINT "R E A L E S T A T E A D V I S O R": HTAB 30: PRINT "BY ROBERT A. ALBANITO": HTAB 20: PRINT "COPYRIGHT(C) 1990 MINDCRAFT PUBL. CORP.": VTAB 24: HTAB 27: PRINT "PRESS RETURN TO CONTINUE";: GET ZZ$: POKE 49168,0
2480 DIM A$(26),A(26),B$(29),B(29,5),E$(12),E(12),M$(14),V$(27),TH(40),MT$(12),C(15)
2490 FOR X = 1 TO 26: READ A$(X): NEXT : FOR X = 1 TO 29: READ B$(X): NEXT : FOR X = 1 TO 14: READ M$(X): NEXT
2500 FOR X = 1 TO 12: READ MT$(X): NEXT
2510 ONERR GOTO 3470
2520 HOME : VTAB 12: HTAB 13: PRINT "GET AN EXISTING SETUP FILE OR CREATE A NEW ONE? (G/C) ";: GET G$: POKE 49168,0: IF G$ = "C" OR G$ = "c" THEN FOR X = 1 TO 26: READ V$(X): NEXT : GOTO 2580
2530 IF G$ = "G" OR G$ = "g" THEN SW = 1: GOSUB 3180: GOTO 2550
2540 GOTO 2520
2550 PRINT D$;"VERIFY"F$
2560 PRINT : PRINT D$"OPEN"F$:FO = 1: PRINT D$"READ"F$: FOR X = 1 TO 27: INPUT V$(X): NEXT : PRINT D$"CLOSE"F$:FO = 0: IF V$(27) = "REA.FILE" THEN 2580
2570 E = 5: GOTO 3500
2580 FOR X = 1 TO 26:A(X) = VAL(V$(X)): NEXT : GOTO 2770
2590 IF G$ = "P" THEN PRINT CHR$(12): PRINT CHR$(4)"PR#0": PRINT CHR$(4)"PR#3": PRINT : IF MM = 0 OR MM = 5 THEN H = 0: GOTO 2770
2600 IF G$ = "P" THEN G$ = "": GOTO 2620
2610 VTAB 24: POKE 36,34: PRINT "PRESS ANY KEY ";: GET G$: POKE 49168,0
2630 RT = 0:R = 0:SA = 0:SI = 0:SR = 0:TD = 0:TI = 0:TP = 0:TR = 0:TY = 0:U = 0:VT = 0:H$ = "": FOR X = 1 TO 15:C(X) = 0: NEXT : FOR X = 1 TO 40:TH(X) = 0: NEXT :X = 0
2640 IF CG = 1 THEN HOME : VTAB 10: POKE 36,22: PRINT "RESTORE SET-UP TO BEGINNING VALUES? ";: GET G$: POKE 49168,0: IF G$ = "Y" OR G$ = "y" THEN FOR X = 1 TO 26:A(X) = VAL(V$(X)): NEXT :CG = 0
2650 REM
2660 REM MAIN MENU
2670 REM
2680 Z = 0:MM = 0: HOME :F$ = "MAIN MENU":A1 = 1:A2 = 6:CC = 9:LC = 25: GOSUB 2690:MM = X: ON MM GOTO 850,1070,1900,2130,2770: PRINT CHR$(21): HOME : END
2690 HOME : VTAB 8: POKE 36,40 -( LEN(F$)/2): PRINT F$: VTAB 10: FOR X = A1 TO A2: POKE 36,LC: PRINT M$(X): NEXT :X = A1: VTAB 10 +(A2 -A1 +2): POKE 36,18: PRINT "USE <ARROWS> TO SELECT...<RETURN> TO EXECUTE"
2700 V = X +CC: VTAB V: INVERSE : POKE 36,LC: PRINT M$(X);: WAIT -16384,128: GET G$: POKE 49168,0:H = ASC(G$): NORMAL : POKE 36,LC: PRINT M$(X): IF H = 13 THEN RETURN
2710 IF H = 21 OR H = 10 THEN X = X +1: IF X >A2 THEN X = A1
2720 IF H = 8 OR H = 11 THEN X = X -1: IF X <A1 THEN X = A2
2730 GOTO 2700
2740 REM
2750 REM SETUP MENU
2760 REM
2770 HOME
2780 VTAB 1: POKE 36,29: PRINT "---- SETUP MENU ----": PRINT : IF H = 80 THEN RETURN
2790 VTAB 4: FOR Z = 1 TO 13: POKE 36,1: PRINT A$(Z);:W = A(Z):G = 38: GOSUB 130:Z = Z +13: POKE 36,41: PRINT A$(Z);:W = A(Z):G = 78: GOSUB 130:Z = Z -13: PRINT : NEXT : PRINT
2800 V = 3:Z = 1:LT = 1:AA = 0
2810 VTAB 22: CALL -958: HTAB 10: PRINT "USE THE <ARROWS/RETURN> KEYS TO CHANGE...<ESC> FOR MAIN MENU": HTAB 13: PRINT "<P> PRINT SETUP <S> SAVE SETUP <N> NEW SETUP":F1$ = "AMOUNT TO LARGE... PLEASE RE-ENTER"
2820 V = Z +3 +AA: VTAB V: INVERSE : POKE 36,LT: PRINT LEFT$(A$(Z) +" ",27);: WAIT -16384,128: GET G$: POKE 49168,0:H = ASC(G$): NORMAL : REM 23 SPACES
2830 IF H = 27 THEN 2680
2840 IF H = 80 OR H = 112 THEN GOSUB 770: GOSUB 2780: FOR Z = 1 TO 26: POKE 36,20: PRINT A$(Z);:W = A(Z):G = 61: GOSUB 130: PRINT : NEXT : GOTO 2590
2850 IF H = 83 OR H = 115 THEN SW = 2: VTAB 18: CALL -958: GOSUB 3180: VTAB 18: PRINT : CALL -958: POKE 36,30: PRINT "SAVING SETUP TO DISK"
2860 IF H = 83 OR H = 115 THEN PRINT : PRINT D$"OPEN"F$:FO = 1: PRINT D$"WRITE"F$: FOR X = 1 TO 26: PRINT A(X): NEXT : PRINT "REA.FILE": PRINT D$"CLOSE"F$:FO = 0: ON SS GOTO 2750: VTAB 19: CALL -958: GOTO 2770
2870 IF H = 78 OR H = 110 THEN 2520
2880 IF H = 13 THEN G$ = "": GOTO 2930
2890 POKE 36,LT: PRINT LEFT$(A$(Z) +" ",27);: REM 23 SPACES
2900 IF H = 21 OR H = 10 THEN Z = Z +1: IF Z >13 THEN AA = -13:LT = 41: IF Z >26 THEN Z = 1:AA = 0:LT = 1
2910 IF H = 8 OR H = 11 THEN Z = Z -1: IF Z <14 THEN AA = 0:LT = 1: IF Z <1 THEN Z = 26:AA = -13:LT = 41
2920 GOTO 2820
2930 VTAB V: POKE 36,LT +27: PRINT " ";: VTAB V: POKE 36,LT +37 - LEN(G$): PRINT G$;: PRINT ;: GET A$: POKE 49168,0:A = ASC(A$): IF A = 13 THEN 3000: REM 10 SPACES
2940 IF Z = 12 THEN IF A = 83 OR A = 115 THEN G$ = "1": GOTO 3110
2950 IF Z = 12 THEN IF A = 77 OR A = 109 THEN G$ = "2": GOTO 3110
2960 IF Z = 12 THEN F1$ = "ENTER <M> OR <S>..": GOTO 3130
2970 IF A <46 OR A >57 OR A = 47 THEN G$ = "": GOTO 2930
2980 G$ = G$ +A$: IF LEN(G$) >6 THEN 3130
2990 GOTO 2930
3000 H = VAL(G$): IF G$ = "" THEN H = 0:F1$ = "NO ENTRY": GOTO 3140
3010 IF Z = 26 THEN IF H <1990 OR H >2000 THEN F1$ = "INCORRECT DATE...": GOTO 3130
3020 IF Z = 2 AND H >A(1) THEN F1$ = A$(Z) +" TO HIGH...": GOTO 3130
3030 IF Z <7 AND H <1 OR Z = 13 AND H <1 OR Z = 14 AND H <1 OR Z = 18 AND H <1 THEN F1$ = A$(Z) +" TO LOW...": GOTO 3130
3040 IF Z = 14 AND H < = A(16) THEN F1$ = A$(Z) +" TO LOW...": GOTO 3130
3050 IF Z = 3 OR Z = 17 OR Z = 20 OR Z = 23 OR Z = 24 OR Z = 25 THEN IF H >20 THEN 3120
3060 IF Z = 4 AND H >45 THEN F1$ = A$(Z) +" TO LONG...": GOTO 3130
3400 IF F$ = "?" THEN HOME : PRINT D$;"CAT": FOR X = 1 TO 3: PRINT : NEXT : GOTO 3380
3410 IF LEN(F$) >0 THEN FOR NC = 1 TO LEN(F$):NA = ASC( MID$ (F$,NC,1)):NF = ((NA >64 AND NA <91) OR (NA >96 AND NA <122) OR (NA = 46) OR (NA >47 AND NA <58 AND NC >1)) AND NF = 1: NEXT
3420 IF F$ = "" OR LEN(F$) >15 OR NF = 0 OR LEFT$(F$,1) = "." THEN VTAB 21: POKE 36,32: PRINT "INVALID PATH NAME": FOR X = 1 TO 1500: NEXT : VTAB 21: POKE 36,30: CALL -868: GOTO 3380
3430 RETURN
3440 REM
3450 REM ERROR ROUTINE
3460 REM
3470 E = PEEK(222): POKE 216,0: NORMAL
3480 ONERR GOTO 3470
3490 IF SW = 1 THEN TEXT : HOME
3500 IF FO = 1 THEN PRINT : PRINT D$;"CLOSE";F$
3510 VTAB 12: IF SW = 2 THEN VTAB 19
3520 IF PEEK(48896) = 76 AND E = 3 THEN POKE 36,25: PRINT "NO DRIVE CONNECTED TO SLOT #";SL: GOTO 3610
3530 IF E = 4 THEN POKE 36,23: PRINT "DISK IS WRITE PROTECTED, REMOVE TAB": GOTO 3610
3540 IF E = 5 THEN POKE 36,26 - LEN(F$)/2: PRINT F$;"...IS NOT AN R.E.ADVISOR FILE": GOTO 3610
3550 IF E = 6 THEN POKE 36,25: PRINT "THAT FILE IS NOT ON THIS DISK!": GOTO 3610
3560 IF E = 8 THEN POKE 36,10: PRINT "A DISK ERROR HAS OCCURRED! CHECK THE DOOR OR DISK IN DRIVE ";DR: GOTO 3610
3570 IF E = 9 THEN POKE 36,32: PRINT "THE DISK IS FULL!": GOTO 3610
3580 IF E = 13 THEN POKE 36,24: PRINT "THE PROGRAM ONLY USES TEXT FILES": GOTO 3610
3590 IF E = 255 THEN 2770
3600 HOME : POKE 36,25: PRINT "ERROR #"E" HAS OCCURED!"
3610 PRINT : POKE 36,27: PRINT "PRESS ANY KEY TO CONTINUE";: GET G$: POKE 49168,0
3630 DATA VALUE OF HOME,AMOUNT OF MORTGAGE,INTEREST RATE (%),LENGTH OF MORTGAGE (YRS.),PROPERTY TAX,MORTGAGE INSURANCE,NUMBER OF POINTS,CLOSING COSTS
3640 DATA I.R.A. CONTRIBUTION,CHARITIES,TOTAL PERSONAL INT. PAID,MARITAL STATUS,PERSONAL EXEMPTIONS,SALARIES,OTHER TAXABLE INCOME,F.I.T.W.,STATE INCOME TAX (%),MONTH OF FIRST PAYMENT
3650 DATA OTHER YEARLY HOME COSTS,APPRECIATION OF HOME (%),MONTHLY COST OF RENT,OTHER YEARLY RENTAL COSTS,YEARLY RENT INCREASES (%),TAX DEFERRED/FREE RATES (%),ESTIMATED INFLATION (%),CURRENT YEAR
3670 DATA STATE TAX,CHARITIES,PERSONAL INTEREST,PERSONAL EXEMPTION,TOTAL DEDUCTIONS,INCOME,OTHER TAXABLE INCOME,TOTAL INCOME,ADJUSTED GROSS INCOME,F.I.T.W.,EST. FEDERAL TAX,EST. FEDERAL REFUND
3680 DATA STATE TAX WITHHELD,EST. STATE TAX,EST. STATE REFUND,TOTAL REFUNDS,NET MORTGAGE PMT.,NET TOTAL MONTH PMT.
3690 DATA ITEMIZED FIVE YEAR REPORT,RENTAL AND OWNERSHIP ANALYSIS,MORTGAGE AND INTEREST RATE TABLES,AMORTIZATION SCHEDULES,SETUP MENU,QUIT
3700 DATA MORTGAGE PAYMENT TABLES,2ND YEAR NET TABLES,MAIN MENU,YEARLY AMORTIZATION SCHEDULE,MONTHLY AMORTIZATION SCHEDULE,MAIN MENU,SEND TO SCREEN,SEND TO PRINTER
3710 DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
3720 DATA 100000,80000,10,15,1000,0,3,1000,2250,500,0,2,2,40000,0,0,2.5,1,2000,5,500,1000,4,6,4,1990